﻿/*********************************************************************************************************************
 * OPTIM
 *********************************************************************************************************************
 * Page: SyncList.Business.ValueObject.FileItem
 * 
 * Description :
 * -------------
 * Représente un fichier
 * 
 * Historique :
 * ------------
 * 10/12/2011 9:56:19 PM - Emmanuel - V__.__.__ - Création
 * 
 * 
 *********************************************************************************************************************/

namespace SyncList.Business.ValueObject
{
    /// <summary>
    /// Représente un fichier
    /// </summary>
    /// <Creation>10/12/2011 9:56:19 PM Emmanuel</Creation>
    public class FileItem : ItemBase
    {

        #region Attributs

        private string _name;
        private string _localFolder;
        private long _size;
        private string _hash;
        private string _userName;

      
     

        #endregion

        #region Constructeur

        /// <summary>
        /// Constructeur
        /// </summary>
        /// <param name="parent">Parent du fichier</param>
        public FileItem()
            : base(null)
        {

        }


        /// <summary>
        /// Constructeur
        /// </summary>
        /// <param name="parent">Parent du fichier</param>
        public FileItem(DirectoryContent parent): base(parent)
        {

        }

        #endregion

        #region Accesseurs

        /// <summary>
        /// Nom du fichier
        /// </summary>
        public override string Name
        {
            get { return (_name); }
            set
            {
                this._name = value;
                OnPropertyChanged("Name");
                OnPropertyChanged("ShortName");
                OnPropertyChanged("ToolTip");
                OnPropertyChanged("Extension");
            }
        }


      


        /// <summary>
        /// Taille du fichier
        /// </summary>
        public override long Size
        {
            get { return (_size); }
            set
            {
                this._size = value;
                OnPropertyChanged("Size");
                OnPropertyChanged("ToolTip"); 
            }
        }


        /// <summary>
        /// Nom de l'utilisateur qui a le fichier
        /// </summary>
        public string UserName
        {
            get { return _userName; }
            set { _userName = value; OnPropertyChanged("UserName"); }
        }



        /// <summary>
        /// Hash du fichier
        /// </summary>
        public string Hash
        {
            get { return (_hash); }
            set { this._hash = value; OnPropertyChanged("Hash"); }
        }


        /// <summary>
        /// Chemin sur le PC local
        /// </summary>
        public string LocalFolder
        {
            get { return (_localFolder); }
            set { _localFolder = value; OnPropertyChanged("LocalFolder"); }
        }


        /// <summary>
        /// Nom court
        /// </summary>
        public string ShortName
        {
            get
            {
                string txt = "";
                int maxLength = 39;
                if (_name.Length > maxLength)
                    txt = _name.Substring(0, maxLength - 3) + "...";
                else
                    txt = _name;
                return (txt);
            }
        }


        /// <summary>
        /// Afficher le tooltip
        /// </summary>
        public override string ToolTip
        {
            get { return (Name + " (" + SizeCaption + ")"); }
        }


        /// <summary>
        /// Extension du fichier
        /// </summary>
        public string Extension
        {
            get
            {
                string extension = "";
                int extPos = _name.LastIndexOf('.');
                if (extPos >= 0)
                    extension = _name.Substring(extPos);
                return (extension);
            }
        }

        /// <summary>
        /// Ce n'est pas un dossier
        /// </summary>
        public override bool IsFolder
        {
            get { return (false); }
        }

        /// <summary>
        /// Un seul fichier, forcément
        /// </summary>
        public override int FileCount
        {
            get { return (1); }
        }


    



        #endregion

        #region Méthodes

        public override string ToString()
        {
            return ("[F] " + _name);
        }


        #endregion


    
    }
}
